package cn.jiahua.dao;

import cn.jiahua.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    public int selectUserCount();



    public List<User> selectUserList();

    /**
     * 根据用户名查询用户新消息列表
     * @param userName
     * @return
     */
    public List<User> selectUserListByName(String userName);


    /**
     * 多条件传参 -对象
     * @param  user
     * @return
     */
    public List<User> selectUserListByNameRole(User user);

    /**
     * 多条件传参 -注解
     * @param
     * @return
     */
    public List<User> selectUserListByNameRole2(@Param("userName") String userName, @Param("userRole") Integer userRole);

    /**
     * 多条件传参 -注解
     * @param
     * @return
     */
    public List<User> selectUserListByNameRole3(Map map);



    /**
     * 多条件传参 -注解
     * @param
     * @return
     */
    public List<User> selectUserListByNameRole4(@Param("userName") String userName, @Param("userRole") Integer userRole);



    public int add(User user);

    public int modify(User user);


    public int  modifyPassword(@Param("id") Integer id, @Param("userPassword") String password);

    public int deleteUserById(Integer id);

    /**
     * assciation使用
     * @param
     * @return
     */
    public List<User> selectUserListByNameRole5(@Param("userName") String userName, @Param("userRole") Integer userRole);

    public User selectUserAddressInfo(Integer id);


    public List<User> selectUserListByNameRole6(@Param("userName") String userName, @Param("roleId") Integer roleId);


    /**
     * 根据用户名查询用户新消息列表
     * @param userName
     * @return
     */
    public List<User> selectUserListByName2(@Param("userName") String userName, @Param("roleId") Integer roleId);

    /**
     * 根据用户名查询用户新消息列表
     * @param userName
     * @return
     */
    public List<User> selectUserListByName3(@Param("userName") String userName, @Param("roleId") Integer roleId);


    public int updateUser(User user);


    public int updateUser2(User user);

    /**
     * 根據用戶角色數組獲取角色對應用戶的信息
     * @param arr
     * @return
     */
    public List<User> selectUserListByRole(Integer[] arr);

    public List<User> selectUserListByRole2(List<Integer> arr);

    public List<User> selectUserListByRole3(Map map);


    /**
     * 根据用户名查询用户新消息列表
     * 有名字按照名字查询
     * 没有名字则按照角色查询
     * @param userName
     * @return
     */
    public List<User> selectUserListByName4(@Param("userName") String userName, @Param("roleId") Integer roleId);


    /**
     * 分页根据用户名查询用户新消息列表
     * @param userName
     * @return
     */
    public List<User> selectUserListByName5(@Param("userName") String userName,
                                            @Param("roleId") Integer roleId,
                                            @Param("from") Integer from,
                                            @Param("pageSize") Integer pageSize);



    public int selectUserCount2(@Param("userName") String userName,
                               @Param("roleId") Integer roleId);


    public User selectUserByCode(@Param("userCode")String userCode);

    public User selectUserById(Integer id);





}
